#-*- coding:utf-8 -*-
import getpass
import pickle
"""
主要功能有：1.注册 2.登录 3.退出
由于python版本不同，请将其中的getpass._raw_input改成getpass.getpass运行
"""
#定义全局变量
the_dict={}

#以二进制形式读操作
def load_dict():
    try:
        with open("passWord.txt",'rb') as f:
            return pickle.load(f)
    except IOError as e:
        raise e

#检查用户是否已经注册，没有则并进行数据写入
def account_check(username,passwd):
    if username in the_dict:
        return False
    the_dict[username]=passwd
    try:
        with open("passWord.txt",mode='wb') as f:
             pickle.dump(the_dict,f)
    except pickle.PickleError as err:
        print("File error"+str(err))
    finally:
        return True

#用户注册
def createaccount():
    while True:
        username=input("请输入账号：")
        user_passwd = getpass._raw_input(prompt="请输入密码：")
        user_passwd2 = getpass._raw_input(prompt="请再次输入密码：")
        if user_passwd!=user_passwd2:
            print("您输入的密码不一致，请重新输入")
            continue
        elif not account_check(username,user_passwd):
            print("账号已被注册，请重新输入")
            continue
        else:
            print("注册成功！")
            break

#用户登录
def login_account():
     print("您有三次机会，3次输入错误后您的账号将被冻结！")
     count=0
     while count<3:
         username=input("请输入您的账户：")
         passwd=getpass._raw_input("请输入您的密码：")
         if  username in the_dict and passwd==the_dict[username] :
             print("登录成功！")
             return username
             break
         else:
             print("您的账号或密码不正确！")
             count = count + 1
             continue
     if count==3:
         return False

#前台用户界面
def the_view():
    """
    1.注册
    2.登录
    0.退出
    """
    a = input("""
    ————————————
    输入1:进行账号注册
    输入2：进行账号登录
    输入3：退出
    ————————————
    请输入您想要进行的操作：
    """)
    if int(a) == 1:
        createaccount()
    elif int(a) == 2:
        username=login_account()
        if username:
            print(username+"您好，欢迎登录***")
        else:
            print("该账号已被冻结！")
    elif int(a)==3:
        exit()


if __name__ == "__main__":
    # 打开文本，以字典形式调出账号密码
    the_dict=load_dict()
    #调用前台界面开始程序
    the_view()





